/**   
 * Copyright © 2019 eSunny Info. Tech Ltd. All rights reserved.
 * 
 * 功能描述：
 * @Package: com.tce.cvm 
 * @author: Yannis   
 * @date: 2019年9月26日 下午6:01:07 
 */
package com.tce.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.tce.model.DataDisk;
import com.tce.model.SystemDisk;
import com.vpc.VirtualPrivateCloud;
import com.tce.model.InternetAccessible;

public class Instance {

	/**
	 * 实例所在的位置。
	 */
	private Placement Placement;

	/**
	 * 实例`ID`。
	 */
	private String InstanceId;

	/**
	 * 实例机型。
	 */
	private String InstanceType;

	/**
	 * 实例的CPU核数，单位：核。
	 */
	private Integer CPU;

	/**
	 * 实例内存容量，单位：`GB`。
	 */
	private Integer Memory;

	/**
	 * 实例业务状态。取值范围：<br>
	 * <li>NORMAL：表示正常状态的实例<br>
	 * <li>EXPIRED：表示过期的实例<br>
	 * <li>PROTECTIVELY_ISOLATED：表示被安全隔离的实例。
	 */
	private String RestrictState;

	/**
	 * 实例名称。
	 */
	private String InstanceName;

	/**
	 * 实例计费模式。取值范围：<br>
	 * <li>`PREPAID`：表示预付费，即包年包月<br>
	 * <li>`POSTPAID_BY_HOUR`：表示后付费，即按量计费<br>
	 * <li>`CDHPAID`：`CDH`付费，即只对`CDH`计费，不对`CDH`上的实例计费。<br>
	 * <li>`SPOTPAID`：表示竞价实例付费。
	 */
	private String InstanceChargeType;

	/**
	 * 实例系统盘信息。
	 */
	private SystemDisk SystemDisk;

	/**
	 * 实例数据盘信息。只包含随实例购买的数据盘。
	 */
	private DataDisk[] DataDisks;

	/**
	 * 实例主网卡的内网`IP`列表。
	 */
	private String[] PrivateIpAddresses;

	/**
	 * 实例主网卡的公网`IP`列表。 注意：此字段可能返回 null，表示取不到有效值。
	 */
	private String[] PublicIpAddresses;

	/**
	 * 实例带宽信息。
	 */
	private InternetAccessible InternetAccessible;

	/**
	 * 实例所属虚拟私有网络信息。
	 */
	private VirtualPrivateCloud VirtualPrivateCloud;

	/**
	 * 生产实例所使用的镜像`ID`。
	 */
	private String ImageId;

	/**
	 * 自动续费标识。取值范围：<br>
	 * <li>`NOTIFY_AND_MANUAL_RENEW`：表示通知即将过期，但不自动续费<br>
	 * <li>`NOTIFY_AND_AUTO_RENEW`：表示通知即将过期，而且自动续费<br>
	 * <li>`DISABLE_NOTIFY_AND_MANUAL_RENEW`：表示不通知即将过期，也不自动续费。
	 */
	private String RenewFlag;

	/**
	 * 创建时间。按照`ISO8601`标准表示，并且使用`UTC`时间。格式为：`YYYY-MM-DDThh:mm:ssZ`。
	 */
	private String CreatedTime;

	/**
	 * 到期时间。按照`ISO8601`标准表示，并且使用`UTC`时间。格式为：`YYYY-MM-DDThh:mm:ssZ`。
	 */
	private String ExpiredTime;

	/**
	 * 操作系统名称。
	 */
	private String OsName;

	/**
	 * 实例所属安全组。该参数可以通过调用
	 * [DescribeSecurityGroups](https://cloud.tencent.com/document/api/215/15808)
	 * 的返回值中的sgId字段来获取。
	 */
	private String[] SecurityGroupIds;

	/**
	 * 实例登录设置。目前只返回实例所关联的密钥。
	 */
	private LoginSettings LoginSettings;

	/**
	 * 实例状态。取值范围：<br>
	 * <li>PENDING：表示创建中<br>
	 * </li>
	 * <li>LAUNCH_FAILED：表示创建失败<br>
	 * </li>
	 * <li>RUNNING：表示运行中<br>
	 * </li>
	 * <li>STOPPED：表示关机<br>
	 * </li>
	 * <li>STARTING：表示开机中<br>
	 * </li>
	 * <li>STOPPING：表示关机中<br>
	 * </li>
	 * <li>REBOOTING：表示重启中<br>
	 * </li>
	 * <li>SHUTDOWN：表示停止待销毁<br>
	 * </li>
	 * <li>TERMINATING：表示销毁中。<br>
	 * </li>
	 */
	private String InstanceState;

	/**
	 * 实例的关机计费模式。 取值范围：<br>
	 * <li>KEEP_CHARGING：关机继续收费<br>
	 * <li>STOP_CHARGING：关机停止收费
	 * <li>NOT_APPLICABLE：实例处于非关机状态或者不适用关机停止计费的条件<br>
	 */
	private String StopChargingMode;

	/**
	 * @return the placement
	 */
	@JSONField(name = "Placement")
	public Placement getPlacement() {
		return Placement;
	}

	/**
	 * @param placement the placement to set
	 */
	public void setPlacement(Placement placement) {
		Placement = placement;
	}

	/**
	 * @return the instanceId
	 */
	@JSONField(name = "InstanceId")
	public String getInstanceId() {
		return InstanceId;
	}

	/**
	 * @param instanceId the instanceId to set
	 */
	public void setInstanceId(String instanceId) {
		InstanceId = instanceId;
	}

	/**
	 * @return the instanceType
	 */
	@JSONField(name = "InstanceType")
	public String getInstanceType() {
		return InstanceType;
	}

	/**
	 * @param instanceType the instanceType to set
	 */
	public void setInstanceType(String instanceType) {
		InstanceType = instanceType;
	}

	/**
	 * @return the cPU
	 */
	@JSONField(name = "CPU")
	public Integer getCPU() {
		return CPU;
	}

	/**
	 * @param cPU the cPU to set
	 */
	public void setCPU(Integer cPU) {
		CPU = cPU;
	}

	/**
	 * @return the memory
	 */
	@JSONField(name = "Memory")
	public Integer getMemory() {
		return Memory;
	}

	/**
	 * @param memory the memory to set
	 */
	public void setMemory(Integer memory) {
		Memory = memory;
	}

	/**
	 * @return the restrictState
	 */
	@JSONField(name = "RestrictState")
	public String getRestrictState() {
		return RestrictState;
	}

	/**
	 * @param restrictState the restrictState to set
	 */
	public void setRestrictState(String restrictState) {
		RestrictState = restrictState;
	}

	/**
	 * @return the instanceName
	 */
	@JSONField(name = "InstanceName")
	public String getInstanceName() {
		return InstanceName;
	}

	/**
	 * @param instanceName the instanceName to set
	 */
	public void setInstanceName(String instanceName) {
		InstanceName = instanceName;
	}

	/**
	 * @return the instanceChargeType
	 */
	@JSONField(name = "InstanceChargeType")
	public String getInstanceChargeType() {
		return InstanceChargeType;
	}

	/**
	 * @param instanceChargeType the instanceChargeType to set
	 */
	public void setInstanceChargeType(String instanceChargeType) {
		InstanceChargeType = instanceChargeType;
	}

	/**
	 * @return the systemDisk
	 */
	@JSONField(name = "SystemDisk")
	public SystemDisk getSystemDisk() {
		return SystemDisk;
	}

	/**
	 * @param systemDisk the systemDisk to set
	 */
	public void setSystemDisk(SystemDisk systemDisk) {
		SystemDisk = systemDisk;
	}

	/**
	 * @return the dataDisks
	 */
	@JSONField(name = "DataDisks")
	public DataDisk[] getDataDisks() {
		return DataDisks;
	}

	/**
	 * @param dataDisks the dataDisks to set
	 */
	public void setDataDisks(DataDisk[] dataDisks) {
		DataDisks = dataDisks;
	}

	/**
	 * @return the privateIpAddresses
	 */
	@JSONField(name = "PrivateIpAddresses")
	public String[] getPrivateIpAddresses() {
		return PrivateIpAddresses;
	}

	/**
	 * @param privateIpAddresses the privateIpAddresses to set
	 */
	public void setPrivateIpAddresses(String[] privateIpAddresses) {
		PrivateIpAddresses = privateIpAddresses;
	}

	/**
	 * @return the publicIpAddresses
	 */
	@JSONField(name = "PublicIpAddresses")
	public String[] getPublicIpAddresses() {
		return PublicIpAddresses;
	}

	/**
	 * @param publicIpAddresses the publicIpAddresses to set
	 */
	public void setPublicIpAddresses(String[] publicIpAddresses) {
		PublicIpAddresses = publicIpAddresses;
	}

	/**
	 * @return the internetAccessible
	 */
	@JSONField(name = "InternetAccessible")
	public InternetAccessible getInternetAccessible() {
		return InternetAccessible;
	}

	/**
	 * @param internetAccessible the internetAccessible to set
	 */
	public void setInternetAccessible(InternetAccessible internetAccessible) {
		InternetAccessible = internetAccessible;
	}

	/**
	 * @return the virtualPrivateCloud
	 */
	@JSONField(name = "VirtualPrivateCloud")
	public VirtualPrivateCloud getVirtualPrivateCloud() {
		return VirtualPrivateCloud;
	}

	/**
	 * @param virtualPrivateCloud the virtualPrivateCloud to set
	 */
	public void setVirtualPrivateCloud(VirtualPrivateCloud virtualPrivateCloud) {
		VirtualPrivateCloud = virtualPrivateCloud;
	}

	/**
	 * @return the imageId
	 */
	@JSONField(name = "ImageId")
	public String getImageId() {
		return ImageId;
	}

	/**
	 * @param imageId the imageId to set
	 */
	public void setImageId(String imageId) {
		ImageId = imageId;
	}

	/**
	 * @return the renewFlag
	 */
	@JSONField(name = "RenewFlag")
	public String getRenewFlag() {
		return RenewFlag;
	}

	/**
	 * @param renewFlag the renewFlag to set
	 */
	public void setRenewFlag(String renewFlag) {
		RenewFlag = renewFlag;
	}

	/**
	 * @return the createdTime
	 */
	@JSONField(name = "CreatedTime")
	public String getCreatedTime() {
		return CreatedTime;
	}

	/**
	 * @param createdTime the createdTime to set
	 */
	public void setCreatedTime(String createdTime) {
		CreatedTime = createdTime;
	}

	/**
	 * @return the expiredTime
	 */
	@JSONField(name = "ExpiredTime")
	public String getExpiredTime() {
		return ExpiredTime;
	}

	/**
	 * @param expiredTime the expiredTime to set
	 */
	public void setExpiredTime(String expiredTime) {
		ExpiredTime = expiredTime;
	}

	/**
	 * @return the osName
	 */
	@JSONField(name = "OsName")
	public String getOsName() {
		return OsName;
	}

	/**
	 * @param osName the osName to set
	 */
	public void setOsName(String osName) {
		OsName = osName;
	}

	/**
	 * @return the securityGroupIds
	 */
	@JSONField(name = "SecurityGroupIds")
	public String[] getSecurityGroupIds() {
		return SecurityGroupIds;
	}

	/**
	 * @param securityGroupIds the securityGroupIds to set
	 */
	public void setSecurityGroupIds(String[] securityGroupIds) {
		SecurityGroupIds = securityGroupIds;
	}

	/**
	 * @return the loginSettings
	 */
	@JSONField(name = "LoginSettings")
	public LoginSettings getLoginSettings() {
		return LoginSettings;
	}

	/**
	 * @param loginSettings the loginSettings to set
	 */
	public void setLoginSettings(LoginSettings loginSettings) {
		LoginSettings = loginSettings;
	}

	/**
	 * @return the instanceState
	 */
	@JSONField(name = "InstanceState")
	public String getInstanceState() {
		return InstanceState;
	}

	/**
	 * @param instanceState the instanceState to set
	 */
	public void setInstanceState(String instanceState) {
		InstanceState = instanceState;
	}

	/**
	 * @return the stopChargingMode
	 */
	@JSONField(name = "StopChargingMode")
	public String getStopChargingMode() {
		return StopChargingMode;
	}

	/**
	 * @param stopChargingMode the stopChargingMode to set
	 */
	public void setStopChargingMode(String stopChargingMode) {
		StopChargingMode = stopChargingMode;
	}
	
}
